home *** CD-ROM | disk | FTP | other *** search
/ MacAddict 83 / MacAddict_083_2003-07.iso / mac / Software / Development / VLC Source 0.5.3.dmg / include / vlc_config.h < prev    next >
C/C++ Source or Header  |  2003-04-07  |  11KB  |  295 lines

  1. /*****************************************************************************
  2.  * vlc_config.h: limits and configuration
  3.  * Defines all compilation-time configuration constants and size limits
  4.  *****************************************************************************
  5.  * Copyright (C) 1999-2003 VideoLAN
  6.  *
  7.  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  8.  *          Samuel Hocevar <sam@via.ecp.fr>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  * 
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  23.  *****************************************************************************/
  24.  
  25. /* Conventions regarding names of symbols and variables
  26.  * ----------------------------------------------------
  27.  *
  28.  * - Symbols should begin with a prefix indicating in which module they are
  29.  *   used, such as INTF_, VOUT_ or ADEC_.
  30.  */
  31.  
  32. /*****************************************************************************
  33.  * General configuration
  34.  *****************************************************************************/
  35.  
  36. #define CLOCK_FREQ 1000000
  37.  
  38.  
  39. /* Automagically spawn audio and video decoder threads */
  40. #define AUTO_SPAWN
  41.  
  42. /* When creating or destroying threads in blocking mode, delay to poll thread
  43.  * status */
  44. #define THREAD_SLEEP                    ((mtime_t)(0.010*CLOCK_FREQ))
  45.  
  46. /* When a thread waits on a condition in debug mode, delay to wait before
  47.  * outputting an error message (in second) */
  48. #define THREAD_COND_TIMEOUT             1
  49.  
  50. /* The configuration file and directory */
  51. #ifdef SYS_BEOS
  52. #  define CONFIG_DIR                    "config/settings/VideoLAN Client"
  53. #elif SYS_DARWIN
  54. #  define CONFIG_DIR                    "Library/Preferences/VLC"
  55. #elif defined( WIN32 ) || defined( UNDER_CE )
  56. #  define CONFIG_DIR                    "vlc"
  57. #else
  58. #  define CONFIG_DIR                    ".vlc"
  59. #endif
  60. #define CONFIG_FILE                     "vlcrc"
  61.  
  62. /*****************************************************************************
  63.  * Interface configuration
  64.  *****************************************************************************/
  65.  
  66. /* Base delay in micro second for interface sleeps */
  67. #define INTF_IDLE_SLEEP                 ((mtime_t)(0.050*CLOCK_FREQ))
  68.  
  69. /* Step for changing gamma, and minimum and maximum values */
  70. #define INTF_GAMMA_STEP                 .1
  71. #define INTF_GAMMA_LIMIT                3
  72.  
  73. /*****************************************************************************
  74.  * Input thread configuration
  75.  *****************************************************************************/
  76.  
  77. /* Used in ErrorThread */
  78. #define INPUT_IDLE_SLEEP                ((mtime_t)(0.100*CLOCK_FREQ))
  79.  
  80. /* Time to wait in case of read error */
  81. #define INPUT_ERROR_SLEEP               ((mtime_t)(0.10*CLOCK_FREQ))
  82.  
  83. /* Number of read() calls needed until we check the file size through
  84.  * fstat() */
  85. #define INPUT_FSTAT_NB_READS            10
  86.  
  87. /*
  88.  * General limitations
  89.  */
  90.  
  91. /* Maximum number of input threads - this value is used exclusively by
  92.  * interface, and is in fact an interface limitation */
  93. #define INPUT_MAX_THREADS               10
  94.  
  95. /* Maximum size of a data packet (128 kB) */
  96. #define INPUT_MAX_PACKET_SIZE           131072
  97.  
  98. /* Maximum length of a pre-parsed chunk (4 MB) */
  99. #define INPUT_PREPARSE_LENGTH           4194304
  100.  
  101. /* Maximum length of a hostname or source name */
  102. #define INPUT_MAX_SOURCE_LENGTH         100
  103.  
  104. /* Maximum memory the input is allowed to use (20 MB) */
  105. #define INPUT_MAX_ALLOCATION            20971520
  106.  
  107. /*
  108.  * Channel method
  109.  */
  110.  
  111. /* Delay between channel changes - this is required to avoid flooding the 
  112.  * channel server */
  113. #define INPUT_CHANNEL_CHANGE_DELAY      (mtime_t)(5*CLOCK_FREQ)
  114.  
  115. /* Duration between the time we receive the data packet, and the time we will
  116.  * mark it to be presented */
  117. #define DEFAULT_PTS_DELAY               (mtime_t)(.3*CLOCK_FREQ)
  118.  
  119. /* DVD and VCD devices */
  120. #if !defined( WIN32 ) && !defined( UNDER_CE )
  121. #   define DVD_DEVICE "/dev/dvd"
  122. #   define VCD_DEVICE "/dev/cdrom"
  123. #else
  124. #   define DVD_DEVICE "D:"
  125. #   define VCD_DEVICE "D:"
  126. #endif
  127.  
  128. /*****************************************************************************
  129.  * Audio configuration
  130.  *****************************************************************************/
  131.  
  132. /* Maximum number of audio output threads */
  133. #define AOUT_MAX_THREADS                10
  134.  
  135. /* Volume */
  136. #define AOUT_VOLUME_DEFAULT             256
  137. #define AOUT_VOLUME_STEP                32
  138. #define AOUT_VOLUME_MAX                 1024
  139. #define AOUT_VOLUME_MIN                 0
  140.  
  141. /* Max number of pre-filters per input, and max number of post-filters */
  142. #define AOUT_MAX_FILTERS                10
  143.  
  144. /* Max number of inputs */
  145. #define AOUT_MAX_INPUTS                 5
  146.  
  147. /* Buffers which arrive in advance of more than AOUT_MAX_ADVANCE_TIME
  148.  * will be considered as bogus and be trashed */
  149. #define AOUT_MAX_ADVANCE_TIME           (mtime_t)(DEFAULT_PTS_DELAY * 3)
  150.  
  151. /* Buffers which arrive in advance of more than AOUT_MAX_PREPARE_TIME
  152.  * will cause the calling thread to sleep */
  153. #define AOUT_MAX_PREPARE_TIME           (mtime_t)(.5*CLOCK_FREQ)
  154.  
  155. /* Buffers which arrive after pts - AOUT_MIN_PREPARE_TIME will be trashed
  156.  * to avoid too heavy resampling */
  157. #define AOUT_MIN_PREPARE_TIME           (mtime_t)(.04*CLOCK_FREQ)
  158.  
  159. /* Max acceptable delay between the coded PTS and the actual presentation
  160.  * time, without resampling */
  161. #define AOUT_PTS_TOLERANCE              (mtime_t)(.02*CLOCK_FREQ)
  162.  
  163. /* Max acceptable resampling (in %) */
  164. #define AOUT_MAX_RESAMPLING             10
  165.  
  166. /*****************************************************************************
  167.  * Video configuration
  168.  *****************************************************************************/
  169.  
  170. /* Maximum number of video output threads */
  171. #define VOUT_MAX_THREADS                256
  172.  
  173. /*
  174.  * Default settings for video output threads
  175.  */
  176.  
  177. /* Multiplier value for aspect ratio calculation (2^7 * 3^3 * 5^3) */
  178. #define VOUT_ASPECT_FACTOR              432000
  179.  
  180. /* Maximum width of a scaled source picture - this should be relatively high,
  181.  * since higher stream values will result in no display at all. */
  182. #define VOUT_MAX_WIDTH                  4096
  183.  
  184. /* Number of planes in a picture */
  185. #define VOUT_MAX_PLANES                 5
  186.  
  187. /* Video heap size - remember that a decompressed picture is big
  188.  * (~1 Mbyte) before using huge values */
  189. #define VOUT_MAX_PICTURES               8
  190.  
  191. /* Minimum number of direct pictures the video output will accept without
  192.  * creating additional pictures in system memory */
  193. #define VOUT_MIN_DIRECT_PICTURES        6
  194.  
  195. /* Number of simultaneous subpictures */
  196. #define VOUT_MAX_SUBPICTURES            8
  197.  
  198. /* Maximum number of active areas in a rendering buffer. Active areas are areas
  199.  * of the picture which need to be cleared before re-using the buffer. If a
  200.  * picture, including its many additions such as subtitles, additionnal user
  201.  * informations and interface, has too many active areas, some of them are
  202.  * joined. */
  203. #define VOUT_MAX_AREAS                  5
  204.  
  205. /* Default fonts */
  206. #define VOUT_DEFAULT_FONT               "default8x9.psf"
  207. #define VOUT_LARGE_FONT                 "default8x16.psf"
  208.  
  209. /* Statistics are displayed every n loops (=~ pictures) */
  210. #define VOUT_STATS_NB_LOOPS             100
  211.  
  212. /*
  213.  * Time settings
  214.  */
  215.  
  216. /* Time during which the thread will sleep if it has nothing to
  217.  * display (in micro-seconds) */
  218. #define VOUT_IDLE_SLEEP                 ((int)(0.020*CLOCK_FREQ))
  219.  
  220. /* Maximum lap of time allowed between the beginning of rendering and
  221.  * display. If, compared to the current date, the next image is too
  222.  * late, the thread will perform an idle loop. This time should be
  223.  * at least VOUT_IDLE_SLEEP plus the time required to render a few
  224.  * images, to avoid trashing of decoded images */
  225. #define VOUT_DISPLAY_DELAY              ((int)(0.200*CLOCK_FREQ))
  226.  
  227. /* Pictures which are VOUT_BOGUS_DELAY or more in advance probably have
  228.  * a bogus PTS and won't be displayed */
  229. #define VOUT_BOGUS_DELAY                ((mtime_t)(DEFAULT_PTS_DELAY * 3))
  230.  
  231. /* Delay (in microseconds) before an idle screen is displayed */
  232. #define VOUT_IDLE_DELAY                 (5*CLOCK_FREQ)
  233.  
  234. /* Number of pictures required to computes the FPS rate */
  235. #define VOUT_FPS_SAMPLES                20
  236.  
  237. /* Better be in advance when awakening than late... */
  238. #define VOUT_MWAIT_TOLERANCE            ((mtime_t)(0.020*CLOCK_FREQ))
  239.  
  240. /* Time to sleep when waiting for a buffer (from vout or the video fifo).
  241.  * It should be approximately the time needed to perform a complete picture
  242.  * loop. Since it only happens when the video heap is full, it does not need
  243.  * to be too low, even if it blocks the decoder. */
  244. #define VOUT_OUTMEM_SLEEP               ((mtime_t)(0.020*CLOCK_FREQ))
  245.  
  246. /* The default video output window title */
  247. #define VOUT_TITLE                      "VLC"
  248.  
  249. /*****************************************************************************
  250.  * Video parser configuration
  251.  *****************************************************************************/
  252.  
  253. #define VPAR_IDLE_SLEEP                 ((mtime_t)(0.010*CLOCK_FREQ))
  254.  
  255. /* Optimization level, from 0 to 2 - 1 is generally a good compromise. Remember
  256.  * that raising this level dramatically lengthens the compilation time. */
  257. #if defined( HAVE_RELEASE )
  258. #   define VPAR_OPTIM_LEVEL             2
  259. #else
  260. #   define VPAR_OPTIM_LEVEL             1
  261. #endif
  262.  
  263. /* Maximum number of macroblocks in a picture. */
  264. #define MAX_MB                          2048
  265.  
  266. /*****************************************************************************
  267.  * Video decoder configuration
  268.  *****************************************************************************/
  269.  
  270. #define VDEC_IDLE_SLEEP                 ((mtime_t)(0.100*CLOCK_FREQ))
  271.  
  272. /* Maximum range of values out of the IDCT + motion compensation. */
  273. #define VDEC_CROPRANGE                  2048
  274.  
  275. /* No SMP by default, since it slows down things on non-smp machines. */
  276. #define VDEC_SMP_DEFAULT                0
  277.  
  278. /* Nice increments for decoders -- necessary for x11 scheduling */
  279. #define VDEC_NICE                       3
  280.  
  281. /*****************************************************************************
  282.  * Messages and console interfaces configuration
  283.  *****************************************************************************/
  284.  
  285. /* Maximal size of a message to be stored in the mesage queue,
  286.  * it is needed when vasprintf is not available */
  287. #define INTF_MAX_MSG_SIZE               512
  288.  
  289. /* Maximal size of the message queue - in case of overflow, all messages in the
  290.  * queue are printed, but not sent to the threads */
  291. #define VLC_MSG_QSIZE                   256
  292.  
  293. /* Maximal depth of the object tree output by vlc_dumpstructure */
  294. #define MAX_DUMPSTRUCTURE_DEPTH         100
  295.